package com.example.lasttrain.common;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

/**　新規でデータベースにアクセスした際に呼ばれるクラス
 * 　　データベース内で使用する各定数はDefinesに記載　*/
public class DatabaseHelper extends SQLiteOpenHelper {

	// デフォルトコンストラクタ
	public DatabaseHelper(Context context) {
		super(context, Defines.DATABASE_NAME, null, Defines.DATABASE_VERSION);
	}
	
	/**　テーブル作成処理　*/
	@Override
	public void onCreate(SQLiteDatabase db) {
		// データベース処理開始
		db.beginTransaction();
		try {
			// 終電情報格納テーブル作成
			db.execSQL("CREATE TABLE " + Defines.TABLE_NAME_L
					+ " (" 
					+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
					+ Defines.FIELD_PATTERN_NAME + " TEXT, "
					+ Defines.FIELD_BOARDING_STA + " TEXT, "
					+ Defines.FIELD_DROPPING_STA + " TEXT, "
					+ Defines.FIELD_LAST_TIME + " TEXT, "
					+ Defines.FIELD_ALARM_TIME + " INTEGER, "
					+ Defines.FIELD_NOTE + " TEXT, "
					+ Defines.FIELD_CREATE_DATE_L + " DATE,"
					+ Defines.FIELD_UPDATE_DATE_L + " DATE,"
					+ Defines.FIELD_DELETE_FLG + " INTEGER,"
					+ Defines.FIELD_ALARM_FLG + " INTEGER"
			        + ");");

			// アラーム情報格納テーブル作成
			db.execSQL("CREATE TABLE " + Defines.TABLE_NAME_A
					+ " (" 
					+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
					+ Defines.FIELD_TRAIN_ID + "INTEGER,"
					+ Defines.FIELD_VIBRATION + "BOOLEAN"
					+ Defines.FIELD_MUSIC_ID + "INTEGER,"
					+ Defines.FIELD_RING_TIME + "INTEGER,"
					+ Defines.FIELD_CREATE_DATE_A + " DATE,"
					+ Defines.FIELD_UPDATE_DATE_A + " DATE"
			        + ");");
			
			// SQL処理を反映
			db.setTransactionSuccessful();
		} finally {
			// データベース処理終了
			db.endTransaction();
		}
	}

	/**　テーブル削除処理　*/
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// テーブルが存在する場合は削除
		db.execSQL("DROP TABLE IF EXISTS DIARY");
		// テーブルを生成
		onCreate(db);
	}
}
